package com.qf.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.qf.pojo.User;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;

import javax.sql.DataSource;

/**
 * DruidConfig:
 * RedisConfig
 * elasticSerarchConfig
 * 自定义Druid连接池
 *
 *
 *  @Configuration : spring-context.xml  配置文件
 *         现在叫 java配置类 == 使用Java的方式完成一个配置
 *         <bean id=dS class=包名+ DruidDataSource  init-method>
 *               <property name="driver" set依赖注入  ref=dataSource
 *             </bean>
 *
 *             <bean id=dataSource:  public DataSource dataSource(){ 方法名就是曾经的ID
 *             @Bean(value = "dS"): value就是曾经的ID
 *
 *
 *
 *             SpringIOC 生命周期：
 *                 1、构造
 *                 2、初始化
 *                 3、依赖注入
 *                 4、set
 *
 *
 *
 *  + @Bean
 * @author lixu
 */
@Configuration(value = "ddc")
//@Qualifier(value = "dc")
public class DruidConfig  {

/*    @Autowired
    public DruidConfig(JedisPool jedisPool) {
        System.out.println();
    }

    @Autowired
    private ApplicationContext applicationContext;*/

    //从SpringIOC的容器获取出 jedisPool    2.2.6版本 默认是开启的       2.6.7版本：依赖注入默认关闭
    @Autowired
    @Qualifier(value = "jedisPool")
    private JedisPool jp;



    /**
     * Jedis的连接池   将Jedis IOC 将Spring容器中
     * @return
     */
    @Bean
    public JedisPool jedisPool(){
        JedisPool jedisPool = new JedisPool("192.168.200.129",6379);
        return jedisPool;
    }

    /**
     * 配置Druid连接池
     */
    @Bean(value = "dS")
    public DataSource dataSource(@Autowired @Qualifier(value = "jedisPool") JedisPool jp){//方法名与@Bean(value = "dS") value的名称是优先级最高的
        DruidDataSource druidDataSource = new DruidDataSource();
        //设置驱动
        druidDataSource.setDriverClassName("com.mysql.jdbc.driver");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("root");
        druidDataSource.setUrl("....");

        return druidDataSource;
    }


    /**
     * 作业:  Java配置类的方式 创建一个Mybatis工厂
     */



    /**
     * 用户对象
     *  <bean id=user class=
     */
    @Bean
    public User user(){
        return new User();
    }

}
